<?php
namespace app\admin\controller;

/**
 * 权限组
 */
class AuthGroupController extends BaseController {

	protected function _initialize() {
		parent::_initialize();
		if (session('ADMIN.id') != 1) {
			$this->error('没有权限');
		}
	}

	/**
	 * 权限组
	 */
	public function index() {
		$auth_group_list = db('auth_group')->select();
		return $this->fetch('index', array('auth_group_list' => $auth_group_list));
	}

	/**
	 * 保存权限组
	 */
	public function add() {
		if ($this->request->isPost()) {
			$data = $this->request->post();
			if (db('auth_group')->insert($data) !== false) {
				$this->success('添加成功');
			} else {
				$this->error('添加失败');
			}
		} else {
			return $this->fetch();
		}
	}

	/**
	 * 更新权限组
	 */
	public function update($id) {
		if ($this->request->isPost()) {
			$data = $this->request->post();
			if ($id == 1 && $data['status'] != 1) {
				$this->error('默认管理组不可禁用');
			}
			if (db('auth_group')->update($data, $id) !== false) {
				$this->success('保存成功');
			} else {
				$this->error('保存失败');
			}
		} else {
			$auth_group = db('auth_group')->find($id);
			return $this->fetch('update', array('auth_group' => $auth_group));
		}
	}

	/**
	 * 更新权限组规则
	 */
	public function auth($id, $auth_rule_ids = '') {
		if ($this->request->isPost()) {
			if ($id) {
				$group_data['id'] = $id;
				$group_data['rules'] = is_array($auth_rule_ids) ? implode(',', $auth_rule_ids) : '';

				if (db('auth_group')->update($group_data, $id) !== false) {
					$this->success('授权成功');
				} else {
					$this->error('授权失败');
				}
			}
		} else {
			return $this->fetch('auth', array('id' => $id));
		}
	}

	/**
	 * AJAX获取规则数据
	 */
	public function getJson($id) {
		$auth_group_data = db('auth_group')->find($id);
		$auth_rules = explode(',', $auth_group_data['rules']);
		$auth_rule_list = db('auth_rule')->field('id,pid,title')->select();
		foreach ($auth_rule_list as $key => $value) {
			in_array($value['id'], $auth_rules) && $auth_rule_list[$key]['checked'] = true;
		}
		return $auth_rule_list;
	}
	
	/**
	 * 状态设置
	 */
	public function status() {
		$ids = input('param.ids/a') ? input('param.ids/a') : input('param.id/a');
		if (in_array(1, $ids)) {
			$this->error('默认管理员组无法设置');
		}
		$val = input('param.val');
		if ($val == false) {
			$val = 2;
		} else {
			$val = 1;
		}
		$res = db('auth_group')->where('id', 'in', $ids)->setField('status', $val);
		if ($res === false) {
			$this->error('设置失败');
		}
		$this->success('设置成功');
	}

	/**
	 * 删除用户组
	 * @param $id
	 */
	public function delete() {
		$ids = input('param.ids/a') ? input('param.ids/a') : input('param.id/a');
		if (in_array(1, $ids)) {
			$this->error('默认管理员组无法删除');
		}
		// 判断组下面有管理员
		$access = db('auth_group_access')->where('group_id', 'in', $ids)->find();
		if ($access) {
			$this->error('组下有成员！请先删除成员再试！');
		}
		// 获取主键
		$res = db('auth_group')->where('id', 'in', $ids)->delete();
		if ($res === false) {
			$this->error('删除失败');
		}
		$this->success('删除成功');
	}

}
